/**
 * 获取用户拥有的菜单
 */

import {getRequest} from "./api";



export const initMenu = (router, store)=>{
    // console.log(store.state.routes.length)
    if (store.state.routes.length > 0){
        return;
    }
    getRequest('/system/cfg/menu').then(data=>{
        if (data){
            // 格式化Router
            let fmtRoutes = formatRoutes(data);
            // 添加到路由
            // router.match = createRouter(constantRoutes).match;
            // router.addRoutes(routes);
            // router.matcher = new VueRouter.matcher
            router.addRoutes(fmtRoutes);
            // 将数据存入Vuex
            store.commit('initRoutes',fmtRoutes);
            // 连接WebSocket
            store.dispatch('connect');
        }
    })
}

export const formatRoutes = (routes)=>{
    // console.log(routes)
    let fmtRoutes = [];
    routes.forEach(router=>{
        let {
            path,
            component,
            name,
            iconCls,
            children,
        } = router;
        if (children && children instanceof Array){
            // 递归
            children = formatRoutes(children);
        }
        // console.log(component);
        let fmRouter = {
            path: path,
            name: name,
            iconCls: iconCls,
            children: children,
            component(resolve){
                if (component.startsWith('Home')){
                    require(['../views/'+component+'.vue'], resolve)
                }else if (component.startsWith('Emp')){
                    require(['../views/emp/'+component+'.vue'],resolve);
                }else if (component.startsWith('Per')){
                    require(['../views/per/'+component+'.vue'],resolve);
                }else if (component.startsWith('Sal')){
                    require(['../views/sal/'+component+'.vue'],resolve);
                }else if (component.startsWith('Sta')){
                    require(['../views/sta/'+component+'.vue'],resolve);
                }else if (component.startsWith('Sys')){
                    require(['../views/sys/'+component+'.vue'],resolve);
                }
            }
        }
        // console.log(fmRouter)
        fmtRoutes.push(fmRouter);
    });
    return fmtRoutes;
}

// 解析component
// function Parse(component){
//     if (component.startsWith('Emp')){
//         require(['../views/emp/'+component+'.vue'],resolve);
//     }else if (component.startsWith('Per')){
//         require(['../views/per/'+component+'.vue'],resolve);
//     }else if (component.startsWith('Sal')){
//         require(['../views/sal/'+component+'.vue'],resolve);
//     }else if (component.startsWith('Sta')){
//         require(['../views/sta/'+component+'.vue'],resolve);
//     }else if (component.startsWith('Sys')){
//         require(['../views/sys/'+component+'.vue'],resolve);
//     }
// }

